﻿using System;
using System.Collections.Generic;
using Sinacor.Infra.UI.Common;
using Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.AjusteMercadoFuturo;

namespace Sinacor.UI.Bovespa.Ordens.Communication.Translator.DataContractToModel
{
    /// <summary>
    /// Translator Class - AjusteMercadoFuturo
    /// </summary>
    public static class AjusteMercadoFuturo
    {
        #region Métodos

        /// <summary>
        /// Traduzir um contrato de dados AjusteMercadoFuturoResponse em uma Model.AjusteMercadoFuturo
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public static Model.AjusteMercadoFuturo ToAjusteMercadoFuturo(AjusteMercadoFuturoResponse from)
        {
            Model.AjusteMercadoFuturo to = new Model.AjusteMercadoFuturo();

            to.AnoPregao = from.AnoPregao;
            to.CodigoNegociacao = from.CodigoNegociacao;
            to.DataPregao = from.DataPregao;
            to.Fator = from.Fator;
            to.PrecoExercicio = from.PrecoExercicio;
            to.Tipo = (Model.Enum.TipoMercado)from.Tipo;       
            to.ValorAjusteAnterior = from.ValorAjusteAnterior;
            to.ValorAjusteAtual = from.ValorAjusteAtual;
            to.Variacao = from.Variacao;

            return to;
        }

        /// <summary>
        /// Realizar um looping pelos items, fazer a chamada para o método de tradução ToAjusteMercadoFuturo() que recebe apenas um item. 
        /// Traduzir todos os items e retornar a lista.
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public static ModelCollection<Model.AjusteMercadoFuturo> ToAjusteMercadoFuturo(List<AjusteMercadoFuturoResponse> from)
        {
            ModelCollection<Model.AjusteMercadoFuturo> response = new ModelCollection<Model.AjusteMercadoFuturo>();

            foreach (AjusteMercadoFuturoResponse item in from)
                response.Add(ToAjusteMercadoFuturo(item));

            return response;
        }

        #endregion
    }
}